技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
30
0
佛心分享-IT 人自學之術
Python學習馬拉松:30天挑戰
系列 第
30
篇
Day30. 實作練習:馬可夫鏈文本生成器 Markov Chain Text Composer
16th鐵人賽
sheep
2024-10-14 14:56:40
639 瀏覽
分享至
教學來源:https://www.youtube.com/watch?v=8ext9G7xspg
這個專案是一個基於馬可夫鏈(Markov Chain)的文本生成器,透過分析文本中的單詞之間的關聯,來生成新文本。
➤ 馬可夫鏈文本生成器的核心概念是透過「當前狀態」來決定「下一個狀態」,在這裡,狀態指的是一個單詞。換句話說,這個程式的目標是根據已知文本中單詞的排列規則,模擬生成類似的文本。
程式碼:
➤ compose.py:
➤ graph.py:
執行3次程式碼的結果:
程式說明:
➤ compose.py:
get_words_from_text函數:
-從給定的文本檔案中讀取內容,去除標點符號,將文本轉換為小寫,並分割成最多 1000 個單詞的列表。
make_graph函數:
-建立一個圖(Graph)來表示單詞之間的關聯。每個單詞是圖中的一個節點(Vertex),如果兩個單詞在文本中連續出現,則在它們之間建立一條邊,邊的權重表示它們一起出現的頻率。
-該圖的功能是幫助後續生成文本時,根據單詞的出現頻率來預測下一個單詞。
compose函數:
-使用生成的圖,隨機選擇一個單詞作為起點,並根據圖中節點之間的關聯逐步生成文本。文本的長度由 length 參數決定(默認為 50 個單詞)。
main函數:
-讀取指定文本檔案,提取單詞,建立單詞之間的關聯圖,並最終生成一段隨機文本。
➤ graph.py:
Vertex 類別:
-圖中的節點,表示一個單詞。每個節點都有一個 adjacent 字典,用來儲存與其他單詞的關聯及其權重。當兩個單詞一起出現時,增加它們之間邊的權重。
-還包含一個方法 next_word(),用來根據關聯單詞的權重,隨機選擇下一個單詞。
Graph 類別:
-圖結構,用來管理所有單詞及它們之間的關聯。每個單詞都是圖中的一個節點,可以根據關聯性預測下一個單詞。
-generate_probability_mappings 用來為每個單詞生成一個概率映射,讓文本生成器根據權重來選擇下一個單詞。
留言
追蹤
檢舉
上一篇
Day29. 實作練習:圈圈叉叉Tic-Tac-Toe --AI
系列文
Python學習馬拉松:30天挑戰
共
30
篇
目錄
RSS系列文
訂閱系列文
2
人訂閱
26
Day26. 實作練習:Binary Search
27
Day27. 實作練習:踩地雷遊戲 Minesweeper
28
Day28. 實作練習:數獨解決器Sudoku Solver
29
Day29. 實作練習:圈圈叉叉Tic-Tac-Toe --AI
30
Day30. 實作練習:馬可夫鏈文本生成器 Markov Chain Text Composer
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
430
組
團體組數
14
組
累計文章數
3433
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
17th鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
不知道網路紅隊的要去那加公司
Jaspersoft 的資料庫連結 出現錯誤:驅動程式無法使用安全通訊端層 (SSL) 加密建立與 SQL Server 的安全連接。
aws ec2 檢查故障問題
IIS 管理員 連線功能不見
尋求git之外的 高效能本機檔案備份 & 版本管理推薦
請問有人遇過在lightsail上部屬fastapi失敗的案例?
port-forwading到遠程網段
HackerOne的賞金等好久都領不到
熱門回答
不知道網路紅隊的要去那加公司
尋求git之外的 高效能本機檔案備份 & 版本管理推薦
請問有人遇過在lightsail上部屬fastapi失敗的案例?
aws ec2 檢查故障問題
port-forwading到遠程網段
熱門文章
什麼是 Signal ?
序: AI 加速編碼後,你該學什麼?
Signal 的核心概念
第12天,即時通訊軟體選擇 / 金峰滷肉飯 台北名店(台北中正)| 30天滷肉飯
第13天,雲端硬碟軟體選擇 / 吉仔冬瓜肉飯 在地排隊美食(新北土城)| 30天滷肉飯
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}